/**
 *******************************************************************************
 * @FileName  : pm.c
 * @Author    : GaoQiu
 * @CreateDate: 2020-05-18
 * @Copyright : Copyright(C) GaoQiu
 *              All Rights Reserved.
 *******************************************************************************
 */
#include "pm.h"
#include "platform/platform.h"

void PM_SetUp(void)
{
	/* GPIO config. */
	GPIO_InitType_t GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_0;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_In;
	GPIO_InitStruct.GPIO_Pull = GPIO_PullUp_Strong;
	GPIO_Init(GPIOD, &GPIO_InitStruct);

	GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_1;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out;
	GPIO_InitStruct.GPIO_Pull = GPIO_Pull_Floating;
	GPIO_Init(GPIOD, &GPIO_InitStruct);

	/* Set wake-up source. */
	GPIO_SetWakeup(GPIOD, GPIO_Pin_0, 0, 1);
}

void PM_Loop(void)
{
	GPIO_WriteBits(GPIOD, GPIO_Pin_1, 0);
	PWR_Sleep(SLEEP_Mode_Suspend, WAKE_Src_Timer|WAKE_Src_Pad, SysTimer_GetCurTick() + SYS_TIM_MS_TO_TICK(100));
	GPIO_WriteBits(GPIOD, GPIO_Pin_1, 1);
	delay_ms(10);
}

